package in.rob.client.widget;
import in.lib.Constants;
import in.lib.Constants.StreamList;
import in.rob.client.R;
import in.rob.client.ThreadActivity;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.preference.PreferenceManager;
import android.text.TextUtils;
import android.widget.RemoteViews;
public class ScrollWidgetProvider extends AppWidgetProvider
{
@Override public void onEnabled(Context context)
{
super.onEnabled(context);
}
@Override public void onReceive(Context context, Intent intent)
{
super.onReceive(context, intent);
if (intent.getAction().equals(AppWidgetManager.ACTION_APPWIDGET_UPDATE))
{
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
int idToUpdate = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
if (idToUpdate != -1)
{
// Perform data update
appWidgetManager.notifyAppWidgetViewDataChanged(new int[]{idToUpdate}, R.id.widget_post_feed_view);
updateAppWidget(context, appWidgetManager, idToUpdate);
}
}
}
@Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
for (int i = 0; i < appWidgetIds.length; i++)
{
updateAppWidget(context, appWidgetManager, appWidgetIds[i]);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
public static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId)
{
// stream string
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String streamStr = prefs.getString("scroller_stream_id_" + appWidgetId, StreamList.TIMELINE.toString());
Intent serviceIntent = new Intent(context, ScrollWidgetService.class);
serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
int layoutRes = prefs.getString("scroller_theme_" + appWidgetId, "Light").equals("Light") ? R.layout.light_scroll_widget : R.layout.dark_scroll_widget;
RemoteViews widget = new RemoteViews(context.getPackageName(), layoutRes);
widget.setRemoteAdapter(R.id.widget_post_feed_view, serviceIntent);
Intent threadIntent = new Intent(context, ThreadActivity.class);
PendingIntent threadPendingIntent = PendingIntent.getActivity(context, 0, threadIntent, PendingIntent.FLAG_UPDATE_CURRENT);
widget.setPendingIntentTemplate(R.id.widget_post_feed_view, threadPendingIntent);
Intent newPostIntent = new Intent(Constants.ACTION_INTENT_NEW_POST);
PendingIntent pendingNewPostIntent = PendingIntent.getBroadcast(context, 0, newPostIntent, PendingIntent.FLAG_UPDATE_CURRENT);
widget.setOnClickPendingIntent(R.id.widget_new_post, pendingNewPostIntent);
Intent refreshIntent = new Intent(Constants.ACTION_INTENT_REFRESH);
refreshIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent pendingRefreshIntent = PendingIntent.getBroadcast(context, 0, refreshIntent, PendingIntent.FLAG_UPDATE_CURRENT);
widget.setOnClickPendingIntent(R.id.widget_refresh, pendingRefreshIntent);
Intent openAppIntent = new Intent(Constants.ACTION_INTENT_OPEN_APP);
PendingIntent pendingOpenAppIntent = PendingIntent.getBroadcast(context, 0, openAppIntent, PendingIntent.FLAG_UPDATE_CURRENT);
widget.setOnClickPendingIntent(R.id.widget_logo, pendingOpenAppIntent);
if (!TextUtils.isEmpty(streamStr))
{
widget.setTextViewText(R.id.title, context.getString(StreamList.getStreamFromString(streamStr).getLabelRes()));
}
appWidgetManager.updateAppWidget(appWidgetId, widget);
}
}